package com.longcai.util.wechat;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.fastjson.JSONException;
import com.alibaba.fastjson.JSONObject;
import com.longcai.constants.WxConstants;
import com.longcai.util.StringUtils;

 
 
public class WX_TokenUtil {
 
    
	private static Logger logger = LoggerFactory.getLogger(WX_TokenUtil.class);
       /**
         *  获得微信 AccessToken
         * access_token是公众号的全局唯一接口调用凭据，公众号调用各接口时都需使用access_token。
         * 开发者需要access_token的有效期目前为2个小时，需定时刷新，重复获取将导致上次获取
         * 的access_token失效。  
         * （此处我是把token存在java缓存里面了）此代码token没有加入缓存,后面附了缓存的工具类,根据需求自己添加
         */
 
        public static AccessToken getWXToken() {
 
            String appId=WxConstants.APPID;
            String appSecret=WxConstants.APPSECRET;
            String tokenUrl = WxConstants.ACCESS_TOKEN+"&appid="+ appId+"&secret="+ appSecret;
            AccessToken access_token = new AccessToken();
            JSONObject jsonObject = WX_HttpsUtil.httpsRequest(tokenUrl, "GET", null);
            if (null != jsonObject) {
            	if(jsonObject.get("errcode")!=null||jsonObject.get("errcode")!=""){
            		if(jsonObject.get("errcode").equals("40125")){
            			logger.error("消息推送-----微信获取token失败---请重置密钥微信AppSecret");
                		return null;
            		}
            	}
                try {
                    access_token.setAccessToken(jsonObject.getString("access_token"));
                    access_token.setExpiresin(jsonObject.getInteger("expires_in"));
                } catch (JSONException e) {
                    access_token = null;
                    // 获取token失败
                    logger.error("获取token失败 errcode:{} errmsg:{}", jsonObject.getInteger("errcode"), jsonObject.getString("errmsg"));
                }
                }
            return access_token;
        }
 
}
